# -*- coding: utf-8 -*-

import multiprocessing
import time

g_list = list()


def add_data():
    for i in range(5):
        # 列表是可变类型，可在原有内存的基础上修改数据，修改后内存地址不变，　所认不需要加上global关键字
        # 加上global关键字，表示声明要修改全局变量的内存地址
        g_list.append(i)
        print(f'add_data: {i}')
        time.sleep(0.1)


def read_data():
    print('read:', g_list)


if __name__ == '__main__':
    """
    1. 创建子进程其实是对主进程资源进行copy，子进程其实就是主进程的一个副本
    2. 主进程会等待所有的子进程执行结束之后再结束
    """

    add_process = multiprocessing.Process(target=add_data)
    read_process = multiprocessing.Process(target=read_data)

    add_process.start()
    # 当前进程（主进程）等添加数据的进程执行完成以后代码再继续往下执行
    add_process.join()
    read_process.start()

    print('g_list', g_list)